Release New Version#1990
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Greptile SummaryThis is an automated Changesets release PR bumping all packages to Confidence Score: 4/5Safe to merge for release; a pre-existing P1 semver violation (breaking changes in a minor bump) has already been flagged in prior review rounds. The P1 semver issue for @ensnode/ensnode-sdk and @ensnode/ensrainbow-sdk (breaking API changes shipped as a 1.x minor bump) was identified in earlier review threads. No new issues were found in this diff beyond what was already reported. packages/ensnode-sdk/package.json and packages/ensrainbow-sdk/package.json — breaking changes bumped as minor rather than major. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Changesets Release Action] --> B[Consume .changeset/*.md files]
B --> C[Bump package versions to 1.11.0]
C --> D[Update CHANGELOG.md files]
D --> E[Merge PR]
E --> F[GitHub Action publishes to npm]
subgraph Key Changes
G[ensnode-sdk: Breaking renames\nlabelSet→clientLabelSet\nrecordsCount removed]
H[ensdb-sdk: Polymorphic domain+registry\nschema, race-safe migration]
I[ens-referrals: Overlapping edition\nrejection, new base config type]
J[ensapi: PermissionsUser.events\nnon-null Query.root]
K[ensindexer: addr.reverse\nduplicate-heal prevention]
end
Reviews (9): Last reviewed commit: "chore(release): version apps" | Re-trigger Greptile |
8c08124 to
951bd5d
Compare
951bd5d to
84e86f5
Compare
| "name": "@ensnode/ensnode-sdk", | ||
| "version": "1.10.1", | ||
| "version": "1.11.0", | ||
| "type": "module", |
There was a problem hiding this comment.
Breaking changes shipped as a minor bump
The CHANGELOG for @ensnode/ensnode-sdk@1.11.0 explicitly marks changes as Breaking — labelSet → clientLabelSet rename and recordsCount removal — yet the bump is minor (1.10.1 → 1.11.0). Both packages are at 1.x.x and publicly published, so semver requires a major bump (2.0.0) for breaking API changes. Consumers relying on the removed or renamed fields will silently break without any version-range signal to warn them.
| "name": "@ensnode/ensrainbow-sdk", | ||
| "version": "1.10.1", | ||
| "version": "1.11.0", | ||
| "type": "module", |
There was a problem hiding this comment.
Breaking changes shipped as a minor bump
Same issue as @ensnode/ensnode-sdk: @ensnode/ensrainbow-sdk@1.11.0 also contains the breaking EnsRainbowPublicConfig changes (versionInfo replacing version: string, serverLabelSet rename, recordsCount removal) yet bumps minor instead of major. This violates semver for a public 1.x.x package and will silently break consumers.
84e86f5 to
462a433
Compare
462a433 to
408a21e
Compare
408a21e to
ac1d0ba
Compare
ac1d0ba to
4b27d58
Compare
4b27d58 to
2a30eeb
Compare
Releases: @ensnode/ensrainbow-sdk@1.11.0 @ensnode/ensnode-sdk@1.11.0 @namehash/ens-referrals@1.11.0 ensadmin@1.11.0 @ensnode/integration-test-env@1.11.0 @docs/ensnode@1.11.0 @ensnode/ensindexer-perf-testing@1.11.0 ensapi@1.11.0 ensindexer@1.11.0 @ensnode/ensdb-sdk@1.11.0 enssdk@1.11.0 ensrainbow@1.11.0 fallback-ensapi@1.11.0 @ensnode/ensnode-react@1.11.0 @namehash/namehash-ui@1.11.0 @ensnode/enskit-react-example@0.0.3 enskit@1.11.0 @docs/ensrainbow@1.11.0 enscli@1.11.0 ensskills@1.11.0 @ensnode/datasources@1.11.0 @ensnode/ponder-sdk@1.11.0 @ensnode/ponder-subgraph@1.11.0 @ensnode/shared-configs@1.11.0 [skip ci]
2a30eeb to
c6462f9
Compare
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@namehash/ens-referrals@1.11.0
Minor Changes
#1986
aa26180Thanks @Goader! - AddBaseReferralProgramEditionConfigas the shared parent ofReferralProgramEditionConfigandBaseReferralProgramEditionSummary.#1986
aa26180Thanks @Goader! - Expose the per-award-model (pie-split,rev-share-cap) Zod schemas via@namehash/ens-referrals/internal.#1986
aa26180Thanks @Goader! - Reject overlapping referral program editions: for a givensubregistryId, no two editions may share any point in time.Patch Changes
0d8a4b4,6173160,0d8a4b4,0d64d9e,6173160]:@ensnode/ensdb-sdk@1.11.0
Minor Changes
#1983
6173160Thanks @shrugs! - Unifyv1Domain+v2Domaininto a single polymorphicdomaintable discriminated by atypeenum ("ENSv1Domain"|"ENSv2Domain"), and make Registry polymorphic across concrete ENSv1 (mainnet Registry, Basenames Registry, Lineanames Registry), ENSv1 Virtual (per-parent-domain virtual Registry managed by each ENSv1 domain that has children), and ENSv2 Registries.Breaking schema + id format changes
ENSv1DomainIdis now CAIP-shaped:${ENSv1RegistryId}/${node}(wasNode). Every ENSv1 Domain is addressable through a concrete Registry, so barenodevalues no longer identify a Domain by themselves.RegistryIdis a union ofENSv1RegistryId,ENSv1VirtualRegistryId, andENSv2RegistryId. New id constructors:makeENSv1RegistryId,makeENSv2RegistryId,makeENSv1VirtualRegistryId, andmakeConcreteRegistryId(returnsENSv1RegistryId | ENSv2RegistryIdfor callsites that only need to address a concrete Registry contract).makeENSv1DomainIdnow takes(AccountId, Node).domainstable: replacesv1_domains+v2_domains. Addstype, nullabletokenId(non-null iff ENSv2), nullablenode(non-null iff ENSv1), nullablerootRegistryOwnerId(v1 only).parentIdremoved; parent relationships flow throughregistryCanonicalDomainfor both v1 and v2.registriestable: addstypeenum column and nullablenode(non-null iffENSv1VirtualRegistry). Unique(chainId, address)index becomes a plain index so virtual Registries can share their concrete parent's(chainId, address).registryCanonicalDomain.domainIdis typed as the unifiedDomainId.GraphQL
Registrybecomes a GraphQL interface withENSv1Registry,ENSv1VirtualRegistry, andENSv2Registryimplementations.ENSv1VirtualRegistryexposesnode: Node!.Domaininterface gainsparent: Domain(resolved via the canonical-path dataloader);ENSv1Domainexposesnode: Node!androotRegistryOwner;ENSv2DomainexposestokenId,registry,subregistry,permissions.Query.registry(by: { contract })now DB-looks up the concrete Registry by(chainId, address, type IN (ENSv1Registry, ENSv2Registry)). Virtual Registries are not addressable viaAccountIdalone.Patch Changes
#1996
c186ad8Thanks @tk-o! - MadeEnsDbWriter.migrateEnsNodeSchemarace-condition safe.Updated dependencies [
0d8a4b4,6173160,0d8a4b4,0d64d9e,6173160]:@ensnode/ensnode-sdk@1.11.0
Minor Changes
#1988
0d8a4b4Thanks @tk-o! - Breaking: Updated core ENSNode data models.EnsIndexerPublicConfiglabelSetfield toclientLabelSet.EnsRainbowApiClientOptionslabelSetfield toclientLabelSet.EnsRainbowPublicConfigversion: stringfield withversionInfo: EnsRainbowVersionInfo.labelSetfield toserverLabelSet.recordsCountfield fromEnsRainbowPublicConfig.#1983
6173160Thanks @shrugs! - Centralized Managed Name and Root Registry helpers.getEthnamesSubregistryId,getEthnamesSubregistryManagedName,getBasenamesSubregistryId,getBasenamesSubregistryManagedName,getLineanamesSubregistryId,getLineanamesSubregistryManagedName.getManagedName(namespace, contract)— given any contract in the ENSv1 ecosystem, returns its Managed Name, namehash, and concrete ENSv1 Registry. Replaces the per-plugin helpers above. Also exposesisNameWrapper(namespace, contract).getRootRegistryId(namespace)returns the namespace's primary Root Registry (prefers ENSv2 when defined).getRootRegistryIds(namespace)returns every top-level Root Registry — concrete ENSv1 Root, Basenames/Lineanamesbase.eth/linea.ethENSv1VirtualRegistries, and the ENSv2 Root when defined — for consumers that walk the full canonical-set tree.getENSv1RootRegistryId(namespace).#1988
0d8a4b4Thanks @tk-o! - Introduced a set of "stack info" data models:EnsIndexerStackInfo,EnsNodeStackInfo.#1978
0d64d9eThanks @shrugs! - AddedreplaceBigInts(sourced from@ponder/utils) andtoJsonhelpers to@ensnode/ensnode-sdk.toJsonnow takes an options object ({ pretty?: boolean }) withprettydefaulting tofalse— pass{ pretty: true }for indented output. Migrated all in-repo call sites and dropped the@ponder/utilsdependency fromensapi.#1983
6173160Thanks @shrugs! - Unifyv1Domain+v2Domaininto a single polymorphicdomaintable discriminated by atypeenum ("ENSv1Domain"|"ENSv2Domain"), and make Registry polymorphic across concrete ENSv1 (mainnet Registry, Basenames Registry, Lineanames Registry), ENSv1 Virtual (per-parent-domain virtual Registry managed by each ENSv1 domain that has children), and ENSv2 Registries.Breaking schema + id format changes
ENSv1DomainIdis now CAIP-shaped:${ENSv1RegistryId}/${node}(wasNode). Every ENSv1 Domain is addressable through a concrete Registry, so barenodevalues no longer identify a Domain by themselves.RegistryIdis a union ofENSv1RegistryId,ENSv1VirtualRegistryId, andENSv2RegistryId. New id constructors:makeENSv1RegistryId,makeENSv2RegistryId,makeENSv1VirtualRegistryId, andmakeConcreteRegistryId(returnsENSv1RegistryId | ENSv2RegistryIdfor callsites that only need to address a concrete Registry contract).makeENSv1DomainIdnow takes(AccountId, Node).domainstable: replacesv1_domains+v2_domains. Addstype, nullabletokenId(non-null iff ENSv2), nullablenode(non-null iff ENSv1), nullablerootRegistryOwnerId(v1 only).parentIdremoved; parent relationships flow throughregistryCanonicalDomainfor both v1 and v2.registriestable: addstypeenum column and nullablenode(non-null iffENSv1VirtualRegistry). Unique(chainId, address)index becomes a plain index so virtual Registries can share their concrete parent's(chainId, address).registryCanonicalDomain.domainIdis typed as the unifiedDomainId.GraphQL
Registrybecomes a GraphQL interface withENSv1Registry,ENSv1VirtualRegistry, andENSv2Registryimplementations.ENSv1VirtualRegistryexposesnode: Node!.Domaininterface gainsparent: Domain(resolved via the canonical-path dataloader);ENSv1Domainexposesnode: Node!androotRegistryOwner;ENSv2DomainexposestokenId,registry,subregistry,permissions.Query.registry(by: { contract })now DB-looks up the concrete Registry by(chainId, address, type IN (ENSv1Registry, ENSv2Registry)). Virtual Registries are not addressable viaAccountIdalone.Patch Changes
6173160]:@ensnode/ensrainbow-sdk@1.11.0
Minor Changes
0d8a4b4Thanks @tk-o! - Breaking: Updated core ENSNode data models.EnsIndexerPublicConfiglabelSetfield toclientLabelSet.EnsRainbowApiClientOptionslabelSetfield toclientLabelSet.EnsRainbowPublicConfigversion: stringfield withversionInfo: EnsRainbowVersionInfo.labelSetfield toserverLabelSet.recordsCountfield fromEnsRainbowPublicConfig.Patch Changes
6173160]:enssdk@1.11.0
Minor Changes
#1983
6173160Thanks @shrugs! - Unifyv1Domain+v2Domaininto a single polymorphicdomaintable discriminated by atypeenum ("ENSv1Domain"|"ENSv2Domain"), and make Registry polymorphic across concrete ENSv1 (mainnet Registry, Basenames Registry, Lineanames Registry), ENSv1 Virtual (per-parent-domain virtual Registry managed by each ENSv1 domain that has children), and ENSv2 Registries.Breaking schema + id format changes
ENSv1DomainIdis now CAIP-shaped:${ENSv1RegistryId}/${node}(wasNode). Every ENSv1 Domain is addressable through a concrete Registry, so barenodevalues no longer identify a Domain by themselves.RegistryIdis a union ofENSv1RegistryId,ENSv1VirtualRegistryId, andENSv2RegistryId. New id constructors:makeENSv1RegistryId,makeENSv2RegistryId,makeENSv1VirtualRegistryId, andmakeConcreteRegistryId(returnsENSv1RegistryId | ENSv2RegistryIdfor callsites that only need to address a concrete Registry contract).makeENSv1DomainIdnow takes(AccountId, Node).domainstable: replacesv1_domains+v2_domains. Addstype, nullabletokenId(non-null iff ENSv2), nullablenode(non-null iff ENSv1), nullablerootRegistryOwnerId(v1 only).parentIdremoved; parent relationships flow throughregistryCanonicalDomainfor both v1 and v2.registriestable: addstypeenum column and nullablenode(non-null iffENSv1VirtualRegistry). Unique(chainId, address)index becomes a plain index so virtual Registries can share their concrete parent's(chainId, address).registryCanonicalDomain.domainIdis typed as the unifiedDomainId.GraphQL
Registrybecomes a GraphQL interface withENSv1Registry,ENSv1VirtualRegistry, andENSv2Registryimplementations.ENSv1VirtualRegistryexposesnode: Node!.Domaininterface gainsparent: Domain(resolved via the canonical-path dataloader);ENSv1Domainexposesnode: Node!androotRegistryOwner;ENSv2DomainexposestokenId,registry,subregistry,permissions.Query.registry(by: { contract })now DB-looks up the concrete Registry by(chainId, address, type IN (ENSv1Registry, ENSv2Registry)). Virtual Registries are not addressable viaAccountIdalone.enskit@1.11.0
Patch Changes
6173160]:@ensnode/ensnode-react@1.11.0
Patch Changes
0d8a4b4,6173160,0d8a4b4,0d64d9e,6173160]:@namehash/namehash-ui@1.11.0
Patch Changes
0d8a4b4,6173160,0d8a4b4,0d64d9e,6173160]:@ensnode/datasources@1.11.0
ensskills@1.11.0
@ensnode/ponder-sdk@1.11.0
@ensnode/ponder-subgraph@1.11.0
ensadmin@1.11.0
Minor Changes
#1988
0d8a4b4Thanks @tk-o! - Removed Records Count info from the ENSRainbow card UI on the Connection page.#1988
0d8a4b4Thanks @tk-o! - RenamedENSNodeConfig*components to follow theEnsNodeStackInfo*pattern.Patch Changes
0d8a4b4,6173160,0d8a4b4,0d64d9e,6173160]:ensapi@1.11.0
Minor Changes
#2007
e40ce8fThanks @shrugs! - AddsPermissionsUser.eventsto the Omnigraph API, exposing the per-role-assignment event history (grants, revokes, role-bitmap mutations) for a specific(contract, resource, user)tuple.#1983
6173160Thanks @shrugs! -Query.rootis now non-null and returns the namespace's Root Registry — preferring the ENSv2 Root Registry when defined, falling back to the ENSv1 Root Registry.#1983
6173160Thanks @shrugs! - Unifyv1Domain+v2Domaininto a single polymorphicdomaintable discriminated by atypeenum ("ENSv1Domain"|"ENSv2Domain"), and make Registry polymorphic across concrete ENSv1 (mainnet Registry, Basenames Registry, Lineanames Registry), ENSv1 Virtual (per-parent-domain virtual Registry managed by each ENSv1 domain that has children), and ENSv2 Registries.Breaking schema + id format changes
ENSv1DomainIdis now CAIP-shaped:${ENSv1RegistryId}/${node}(wasNode). Every ENSv1 Domain is addressable through a concrete Registry, so barenodevalues no longer identify a Domain by themselves.RegistryIdis a union ofENSv1RegistryId,ENSv1VirtualRegistryId, andENSv2RegistryId. New id constructors:makeENSv1RegistryId,makeENSv2RegistryId,makeENSv1VirtualRegistryId, andmakeConcreteRegistryId(returnsENSv1RegistryId | ENSv2RegistryIdfor callsites that only need to address a concrete Registry contract).makeENSv1DomainIdnow takes(AccountId, Node).domainstable: replacesv1_domains+v2_domains. Addstype, nullabletokenId(non-null iff ENSv2), nullablenode(non-null iff ENSv1), nullablerootRegistryOwnerId(v1 only).parentIdremoved; parent relationships flow throughregistryCanonicalDomainfor both v1 and v2.registriestable: addstypeenum column and nullablenode(non-null iffENSv1VirtualRegistry). Unique(chainId, address)index becomes a plain index so virtual Registries can share their concrete parent's(chainId, address).registryCanonicalDomain.domainIdis typed as the unifiedDomainId.GraphQL
Registrybecomes a GraphQL interface withENSv1Registry,ENSv1VirtualRegistry, andENSv2Registryimplementations.ENSv1VirtualRegistryexposesnode: Node!.Domaininterface gainsparent: Domain(resolved via the canonical-path dataloader);ENSv1Domainexposesnode: Node!androotRegistryOwner;ENSv2DomainexposestokenId,registry,subregistry,permissions.Query.registry(by: { contract })now DB-looks up the concrete Registry by(chainId, address, type IN (ENSv1Registry, ENSv2Registry)). Virtual Registries are not addressable viaAccountIdalone.Patch Changes
#1978
0d64d9eThanks @shrugs! - AddedreplaceBigInts(sourced from@ponder/utils) andtoJsonhelpers to@ensnode/ensnode-sdk.toJsonnow takes an options object ({ pretty?: boolean }) withprettydefaulting tofalse— pass{ pretty: true }for indented output. Migrated all in-repo call sites and dropped the@ponder/utilsdependency fromensapi.Updated dependencies [
0d8a4b4,aa26180,6173160,0d8a4b4,aa26180,0d64d9e,aa26180,c186ad8,6173160]:ensindexer@1.11.0
Minor Changes
#1983
6173160Thanks @shrugs! - Unifyv1Domain+v2Domaininto a single polymorphicdomaintable discriminated by atypeenum ("ENSv1Domain"|"ENSv2Domain"), and make Registry polymorphic across concrete ENSv1 (mainnet Registry, Basenames Registry, Lineanames Registry), ENSv1 Virtual (per-parent-domain virtual Registry managed by each ENSv1 domain that has children), and ENSv2 Registries.Breaking schema + id format changes
ENSv1DomainIdis now CAIP-shaped:${ENSv1RegistryId}/${node}(wasNode). Every ENSv1 Domain is addressable through a concrete Registry, so barenodevalues no longer identify a Domain by themselves.RegistryIdis a union ofENSv1RegistryId,ENSv1VirtualRegistryId, andENSv2RegistryId. New id constructors:makeENSv1RegistryId,makeENSv2RegistryId,makeENSv1VirtualRegistryId, andmakeConcreteRegistryId(returnsENSv1RegistryId | ENSv2RegistryIdfor callsites that only need to address a concrete Registry contract).makeENSv1DomainIdnow takes(AccountId, Node).domainstable: replacesv1_domains+v2_domains. Addstype, nullabletokenId(non-null iff ENSv2), nullablenode(non-null iff ENSv1), nullablerootRegistryOwnerId(v1 only).parentIdremoved; parent relationships flow throughregistryCanonicalDomainfor both v1 and v2.registriestable: addstypeenum column and nullablenode(non-null iffENSv1VirtualRegistry). Unique(chainId, address)index becomes a plain index so virtual Registries can share their concrete parent's(chainId, address).registryCanonicalDomain.domainIdis typed as the unifiedDomainId.GraphQL
Registrybecomes a GraphQL interface withENSv1Registry,ENSv1VirtualRegistry, andENSv2Registryimplementations.ENSv1VirtualRegistryexposesnode: Node!.Domaininterface gainsparent: Domain(resolved via the canonical-path dataloader);ENSv1Domainexposesnode: Node!androotRegistryOwner;ENSv2DomainexposestokenId,registry,subregistry,permissions.Query.registry(by: { contract })now DB-looks up the concrete Registry by(chainId, address, type IN (ENSv1Registry, ENSv2Registry)). Virtual Registries are not addressable viaAccountIdalone.Patch Changes
#1978
0d64d9eThanks @shrugs! - AddedreplaceBigInts(sourced from@ponder/utils) andtoJsonhelpers to@ensnode/ensnode-sdk.toJsonnow takes an options object ({ pretty?: boolean }) withprettydefaulting tofalse— pass{ pretty: true }for indented output. Migrated all in-repo call sites and dropped the@ponder/utilsdependency fromensapi.#1989
16ecad1Thanks @shrugs! - ENSIndexer's ensv2 plugin now avoids attempting to heal addr.reverse subnames if they've already been healed.Updated dependencies [
0d8a4b4,6173160,0d8a4b4,0d64d9e,c186ad8,6173160]:@ensnode/ensindexer-perf-testing@1.11.0
Minor Changes
16ecad1Thanks @shrugs! - Introduces the ENSIndexer Performance Testing package for running a local Prometheus x Grafana stack against an ENSIndexer instance.ensrainbow@1.11.0
Patch Changes
0d8a4b4,6173160,0d8a4b4,0d64d9e,6173160]:fallback-ensapi@1.11.0
Patch Changes
0d8a4b4,6173160,0d8a4b4,0d64d9e,6173160]:@docs/ensnode@1.11.0
Patch Changes
#1965
3facf20Thanks @sevenzing! - Moved docker-compose.yml file to separatedockerdirectory, updates docs and cicd-testsUpdated dependencies []:
@docs/ensrainbow@1.11.0
Patch Changes
@ensnode/enskit-react-example@0.0.3
Patch Changes
6173160]:@ensnode/integration-test-env@1.11.0
Patch Changes
#1965
3facf20Thanks @sevenzing! - Moved docker-compose.yml file to separatedockerdirectory, updates docs and cicd-testsUpdated dependencies [
0d8a4b4,6173160,0d8a4b4,0d64d9e,c186ad8,6173160]:enscli@1.11.0
@ensnode/shared-configs@1.11.0